﻿using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace HengTong.Model.Db.Hr.Bill;

/// <summary>
/// 人员应聘申请表
/// </summary>
[Display(Name = "人员应聘申请", Description = "人员应聘申请表单", GroupName = "人事业务表单")]
public class SysHrInterviewRequestBill : BasePersonBill
{
    [Display(Name = "招聘发布单ID", Description = "关联的招聘发布单ID", GroupName = "基本信息")]
    public Guid? RecruitPublishRequestBillId { get; set; }

    [Display(Name = "招聘发布单", Description = "关联的招聘发布单", GroupName = "基本信息")]
    public SysHrRecruitPublishRequestBill RecruitPublishRequestBill { get; set; }

    [Display(Name = "可到岗时间", Description = "可到岗时间", GroupName = "工作信息")]
    public DateTime? ArrivalDate { get; set; }

    [Display(Name = "原薪酬", Description = "原薪酬", GroupName = "工作信息")]
    [Column(TypeName = "decimal(10,2)")]
    public decimal? CurrentSalary { get; set; }

    [Display(Name = "期望薪酬", Description = "期望薪酬", GroupName = "工作信息")]
    [Column(TypeName = "decimal(10,2)")]
    public decimal? ExpectedSalary { get; set; }

    [Display(Name = "工作年限(年)", Description = "工作年限(年)", GroupName = "工作信息")]
    [Column(TypeName = "decimal(8,2)")]
    public decimal? WorkExperience { get; set; }

    [Display(Name = "劳动关系是否已解除", Description = "上一家单位劳动关系是否已解除", GroupName = "工作信息")]
    public bool? IsLaborRelationshipTerminated { get; set; }

    // 面试信息
    [Display(Name = "初试时间", Description = "初试时间", GroupName = "面试信息")]
    public DateTime? InitialTestTime { get; set; }

    [Display(Name = "初试结果", Description = "初试结果", GroupName = "面试信息")]
    [StringLength(128)]
    public string InitialResult { get; set; }

    [Display(Name = "初试评语", Description = "初试评语", GroupName = "面试信息")]
    [StringLength(128)]
    public string InitialComment { get; set; }

    [Display(Name = "复试时间", Description = "复试时间", GroupName = "面试信息")]
    public DateTime? ReExamTime { get; set; }

    [Display(Name = "复试结果", Description = "复试结果", GroupName = "面试信息")]
    [StringLength(128)]
    public string ReExamResult { get; set; }

    [Display(Name = "复试评语", Description = "复试评语", GroupName = "面试信息")]
    [StringLength(128)]
    public string ReExamComment { get; set; }

    [Display(Name = "最终结果", Description = "最终结果", GroupName = "面试信息")]
    [StringLength(128)]
    public string FinalResult { get; set; }

    [Display(Name = "最终结果说明", Description = "最终结果说明", GroupName = "面试信息")]
    [StringLength(128)]
    public string FinalRemark { get; set; }

    [Display(Name = "拒绝原因", Description = "拒绝原因", GroupName = "面试信息")]
    [StringLength(128)]
    public string RejectReason { get; set; }

    [Display(Name = "笔试时间", Description = "笔试时间", GroupName = "笔试信息")]
    public DateTime? WrittenTestTime { get; set; }

    [Display(Name = "笔试成绩", Description = "笔试成绩", GroupName = "笔试信息")]
    [Column(TypeName = "decimal(5,2)")]
    public decimal? WrittenTestScore { get; set; }

    [Display(Name = "笔试结果", Description = "笔试结果", GroupName = "笔试信息")]
    [StringLength(128)]
    public string WrittenTestResult { get; set; }

    [Display(Name = "体检时间", Description = "体检时间", GroupName = "体检信息")]
    public DateTime? PhysicalExamTime { get; set; }

    [Display(Name = "体检结果", Description = "体检结果", GroupName = "体检信息")]
    [StringLength(128)]
    public string PhysicalExamResult { get; set; }

    [Display(Name = "体检说明", Description = "体检说明", GroupName = "体检信息")]
    [StringLength(256)]
    public string PhysicalExamRemark { get; set; }

    // 岗前培训信息
    [Display(Name = "岗前培训开始时间", Description = "岗前培训开始时间", GroupName = "岗前培训")]
    public DateTime? PreJobTrainingStartTime { get; set; }

    [Display(Name = "岗前培训结束时间", Description = "岗前培训结束时间", GroupName = "岗前培训")]
    public DateTime? PreJobTrainingEndTime { get; set; }

    [Display(Name = "培训结果", Description = "培训结果", GroupName = "岗前培训")]
    [StringLength(128)]
    public string TrainingResult { get; set; }

    [Display(Name = "培训评语", Description = "培训评语", GroupName = "岗前培训")]
    [StringLength(256)]
    public string TrainingComment { get; set; }
}